package model.personajes;

import model.interfaces.ICaminos;
import model.interfaces.IPacman;
import model.utilidades.Constantes;
import model.utilidades.Vector;

public class Pacman implements IPacman {
	private Vector posicion, posicionInicial;
	private Vector velocidad;
	private ICaminos laberinto;
	private int vidas;
	
	public Pacman(Vector posicionInicial, ICaminos nivel){
		this.posicionInicial = posicionInicial;
		this.laberinto = nivel;
		this.vidas = Constantes.VIDAS_PACMAN;
		
		resetearPosicion();
	}

	public void movimientoAIzquierda(){
		velocidad = new Vector(-Constantes.VELOCIDAD_PACMAN,0);
	}
	
	public void movimientoADerecha(){
		velocidad = new Vector(Constantes.VELOCIDAD_PACMAN,0);
	}

	public void movimientoArriba(){
		velocidad = new Vector(0,-Constantes.VELOCIDAD_PACMAN);
	}
	
	public void movimientoAbajo(){
		velocidad = new Vector(0,Constantes.VELOCIDAD_PACMAN);			
	}

	public void parar() {
		velocidad = new Vector(0,0);	
	}	
	
	
	public Vector obtenerPosicion(){
		return posicion;
	}		

	public Vector obtenerVelocidad(){
		return velocidad;
	}			
	
	private void resetearPosicion(){
		posicion = posicionInicial;
		velocidad = new Vector(0,0);		
	}
	
	@Override
	public void matar() {
		vidas--;
		
		if(vidas > 0){
			resetearPosicion();
		}else{
			//TODO
		}
	}

	@Override
	public void vivir() {	
		posicion = laberinto.obtenerPosicionFinal(posicion, velocidad);
		
		if(laberinto.esUnBorde(posicion))
			parar();
	}

	@Override
	public boolean estaMuerto() {
		return (vidas==0);
	}

	
}
